Reducing data use in limited data environment

ABSTRACT

A non-transitory computer-readable storage medium may include instructions stored thereon. When executed, the instructions may cause a portable computing device to activate a data saving feature in response to determining that the portable computing device is in a limited data environment. The instructions may be configured to cause the portable computing device to at least determine that the portable computing device is in the limited data environment, and based on the determining that the portable computing device is in the limited data environment, prompt a user to activate the data saving feature.

TECHNICAL FIELD

This description relates to data access from a portable computingdevice.

BACKGROUND

Users may download data onto portable computing devices via variousnetworks, such as Institute for Electrical and Electronics Engineers(IEEE) 802.11 Wireless Fidelity (“WiFi”) networks or cellular networks.At times, the data rate may be undesirably slow and/or downloadinglatencies may be undesirably high.

SUMMARY

According to one general aspect, a non-transitory computer-readablestorage medium may include instructions stored thereon. When executed,the instructions may cause a portable computing device to activate adata saving feature in response to determining that the portablecomputing device is in a limited data environment. The instructions maybe configured to cause the portable computing device to at leastdetermine that the portable computing device is in the limited dataenvironment, and based on the determining that the portable computingdevice is in the limited data environment, prompt a user to activate thedata saving feature.

According to another general aspect, a non-transitory computer-readablestorage medium may comprise instructions stored thereon for causing aportable computing device to prompt a user to download a browserextension for reducing data use in response to determining that theportable computing device is in a limited data environment. Theinstructions may be configured to cause the portable computing device toat least determine that the portable computing device is in the limiteddata environment, the determining that the portable computing device isin the limited data environment including comparing a first presentlatency for a first previously visited website to a first previouslydetermined latency for the first previously visited website, comparing asecond present latency for a second previously visited website to asecond previously determined latency for the second previously visitedwebsite, and determining that the first present latency exceeds thefirst previously determined latency and the second present latencyexceeds the second previously determined latency; and based on thedetermining that the portable computing device is in the limited dataenvironment, prompt the user to download the browser extension, thebrowser extension being configured to cause the portable computingdevice to receive compressed data from a proxy server, and decompressthe compressed data received from the proxy server.

According to another general aspect, a non-transitory computer-readablestorage medium may comprise instructions stored thereon for causing aportable computing device to prompt a user to download a browserextension for reducing data use in response to determining that theportable computing device is in a limited data environment. Theinstructions may be configured to cause the portable computing device toat least determine that the portable computing device is accessing theInternet via a cellular connection with a base station, and based on thedetermining that the portable computing device is accessing the Internetvia the cellular connection with the base station, prompt a user todownload the browser extension. The browser extension may be configuredto cause the portable computing device to receive compressed data from aproxy server, and decompress the compressed data received from the proxyserver.

According to another general aspect, a non-transitory computer-readablestorage medium may comprise instructions stored thereon for prompting auser to activate a data saving feature based on a previous user havingactivated the data saving feature. The instructions may be configured tocause a portable computing device to at least accept login credentialsfrom a first user, activate the data saving feature in response to inputfrom the first user during a session associated with the first user, logthe first user out, after logging the first user out, accept logincredentials from a second user, and based on activating the data savingfeature during the session associated with the first user, prompt thesecond user to activate the data saving feature during a sessionassociated with the second user.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a network according to an example embodiment.

FIG. 2A is a timing diagram showing actions performed by the devicesshown in FIG. 1 according to an example embodiment.

FIG. 2B is a timing diagram showing an example in which a portablecomputing device determines speeds of access to web servers according toan example embodiment.

FIG. 2C is a timing diagram showing the portable computing devicedownloading a data saving feature from an extension server according toan example embodiment.

FIG. 3A shows a browser prompting a user to activate a data savingfeature according to an example embodiment.

FIG. 3B shows the browser presenting a web page making the data savingfeature available for download according to an example embodiment.

FIG. 4 is a diagram of the portable computing device according to anexample embodiment.

FIG. 5 is a flowchart showing a method of activating a data savingfeature in response to determining that the portable computing device isin a limited data environment according to an example embodiment.

FIG. 6 is a flowchart showing a method of prompting a user to download abrowser extension for reducing data use in response to determining thatthe portable computing device is in a limited data environment accordingto an example embodiment.

FIG. 7 is a flowchart showing a method of prompting a user to download abrowser extension for reducing data use in response to determining thatthe portable computing device is in a limited data environment accordingto another example embodiment.

FIG. 8 is a flowchart showing a method of prompting a user to activate adata saving feature based on a previous user having activated the datasaving feature according to an example embodiment.

FIG. 9 shows an example of a generic computer device and a genericmobile computer device, which may be used with the techniques describedhere.

DETAILED DESCRIPTION

Users of portable computing devices may access data in limited dataenvironments. The environment may be considered a limited dataenvironment because of a type of connection, such as a cellular or widearea network (WAN) instead of a local area network (LAN), because of anidentity of a network (which may indicate that the user and portablecomputing device are in a congested network such as an airport, hotel,or coffee shop), or because measured data rates or latencies are slowerthan previously measured data rates or latencies. Some users may notknow that they can, or may not know how to, activate data savingfeatures to improve their speeds of connection. Data saving features maycause the portable computing device to receive compressed data from aproxy server, rather than receiving the data directly from web serversthat host the websites the user of the portable computing device isvisiting. To help users improve speeds of connection, the portablecomputing device may automatically prompt a user to download, install,and/or activate a data saving feature in response to determining thatthe portable computing device is in a limited data environment.

FIG. 1 is a diagram of a network 100 according to an example embodiment.The network 100 may enable access to data, such as data available viathe Internet and/or World Wide Web. The network 100 may include awireless network, such as a cellular network including a Global Systemfor Mobile Communications (GSM) network, a Universal MobileTelecommunications System (UMTS) network, a Long-Term Evolution (LTE)network, an Institute for Electrical and Electronics Engineers (IEEE)802.11 Wireless Fidelity (“WiFi”) network, or a wired or guided network,according to example embodiments. The network 100 may be considered adata environment in which computing devices may access data. If dataaccess in the network 100 is comparatively slow, such as if the network100 is a cellular network or if data access in the network 100 is slowerand/or has higher latencies than previously measured data rates and/orlatencies, then the network 100 may be considered a limited dataenvironment. The network 100 may also be considered a limited dataenvironment if a user pays for access based on an amount of datadownloaded and/or based on a time spent accessing the network 100.

A portable computing device 102 may access data, such as data availablevia the Internet or World Wide Web, via the network 100. Portablecomputing device 102 may include a laptop or notebook computer, or atablet computer, according to example embodiments. In exampleembodiments, a preferred environment for the portable computing device102 to access data may be a local area network (LAN) such as an 802.11WiFi network, and a less preferred environment, or limited dataenvironment, may be a wide area network (WAN) such as a cellularnetwork.

The user of the portable computing device 102 may access the Internetvia the portable computing device 102. Portable computing device 102 mayaccess the Internet via a node 104. Node 104 may include a cellular basestation, an 802.11 WiFi access point or hotspot, or any other wirelessnode configured to route data between the portable computing device 102and servers on the Internet.

The portable computing device 102 may determine that the network 100 isa limited data environment. Portable computing device 102 may determinethat the network 100 is a limited data environment based on determiningthat the connection between the portable computing device 102 and thenode 104 is in a WAN and/or that the connection between the portablecomputing device 102 and node 104 is a cellular connection, based onidentifying the node 104 as a node associated with a limited dataenvironment (such as an airport, hotel, or coffee shop), or based on ameasured speed and/or latency of accessing data via the node 104.Portable computing device 102 may access servers within the Internet,such as web servers 108A, 108B, via the node 104. While two web servers108A, 108B are shown in FIG. 1, the portable computing device 102 mayaccess data from any number of servers.

To reduce data consumption within a limited data environment, theportable computing device 102 may prompt the user activate a data savingfeature. The data saving feature may be a feature of a browserextension. The data saving feature and/or browser extension may causethe portable computing device 102 to request and download compresseddata via the node 104 from a proxy server 106 (and/or from the webservers 108A, 108B via the proxy server 106) rather than directly fromthe web servers 108A, 108B. The compressed data received from the proxyserver 106 may include the same information as the data that would bereceived directly from the web servers 108A, 108B, but require fewerbits, have a smaller file size(s), and/or require less time to downloadthan the same data received directly from the web servers 108A, 108B.After decompression, the compressed data may be the same as, and/oridentical to, the data that would or could have been received directlyfrom the web servers 108A, 108B.

Proxy server 106 may have previously downloaded data and/or files fromthe web servers 108A, 108B, and may compress the downloaded data forsending to the portable computing device 102. Proxy server 106 may havedownloaded, stored, and compressed the data from the web servers 108A,108B before the portable computing device 102 requested the data fromthe proxy server 106, or may download, store, and compress data from theweb servers 108A, 108B in response to the portable computing device 102requesting the data from the web servers 108A, 108B via the proxy server106.

Portable computing device 102 may have preinstalled the data savingfeature and may prompt the user to activate the data saving feature, ormay prompt the user to download and install the data saving feature froman extension server 112. The data saving feature, which may be a browserextension, may cause the portable computing device 102 to receive thecompressed data from proxy server 106, and may decompress the data forpresentation to the user. The data saving feature may decompress thecompressed data received from the proxy server 106.

The portable computing device 102 may send reports to a log server 110.The reports sent to the log server 110 by the portable computing device102 may include indications of whether the user chose to activate and/ordownload the data saving feature in response to the prompt from theportable computing device 102. The log server 110 may store indicationsfrom many portable computing devices of whether users activated and/ordownloaded the data saving feature in response to prompts. Based on theindications of whether users activated and/or downloaded the data savingfeature, system administrators may determine which prompts are mosteffective, which types of networks and/or locations have users who aremost likely to activate and/or download the data saving feature, and/orwhich types of portable computing devices are most likely to have userswho choose to download and/or activate the data saving feature.

The reports sent by the portable computing device 102 to the log server110 may also indicate the amount of data reduction and/or reducedlatency based on using the data saving feature. The reports may indicatethe reduction in data sent by downloading the compressed data from theproxy server 106 to the portable computing device 102, rather thandownloading the data directly from the web servers 108A, 108B to theportable computing device 102. Based on the indications of datareduction, administrators may monitor the improvements based on the datasaving feature, and may make changes to the data saving feature toincrease the improvements.

Portable computing device 102 may prompt the user to activate the datasaving feature a limited number of times. Portable computing device 102may, for example, prompt the user to activate the data saving feature amaximum of two times, and if the user does not choose to activate thedata saving feature in response to two different prompts, then theportable computing device 102 may stop prompting the user to activatethe data saving feature. Portable computing device 102 may prompt theuser to activate the data saving feature in response to determining thatthe portable computing device 102 is in the limited data environment(which may be the network 100), or based on a previous user of the sameportable computing device 102 having activated the data saving feature,the previous user having a different account and/or login credentialsthan the current user.

In an example embodiment, portable computing device 102 may also promptother portable computing devices, such as a portable computing device102A, to activate the data saving feature based on the same user withthe same account having activated the data saving feature on theportable computing device 102. For example, the user may have loggedinto the portable computing device 102, activated the data savingfeature in response to the prompt during a first login sessionassociated with the user's account, and thereafter logged out of theportable computing device 102. The portable computing device 102 maysynchronize the user's settings across different devices associated withthe user's account. The user may thereafter log into a differentportable computing device 102A. Based on the user having previouslyactivated the data saving feature during the first login session and theportable computing device 102 synchronizing the user's settings, theportable computing device 102A may activate the data saving featureduring a second login session associated with the user's account withoutan instruction, selection, or input from the user.

FIG. 2A is a timing diagram showing actions performed by the devicesshown in FIG. 1 according to an example embodiment. As shown in FIG. 2A,the portable computing device 102 may access the network 100 (202).Portable computing device 102 may access the network (202) bycommunicating with the node 104. The portable computing device 102 andthe node 104 may engage in a handshake protocol, by which the portablecomputing device 102 and node 104 send messages identifying themselvesto each other, and the node 104 grants the portable computing device 102access to the network 100.

After accessing the network (202), the portable computing device 102 maydetermine that the portable computing device 102 is in a limited dataenvironment (204). Portable computing device 102 may determine that theportable computing device 102 is in the limited data environment (204)by determining that the portable computing device is accessing theInternet via a cellular connection with the node 104, which may a basestation and/or WAN node, according to an example embodiment. In thisexample, the portable computing device 102 may determine that the node104 is a cellular base station and/or WAN node, rather than a Wi-Fiaccess point or hotspot and/or LAN node, and that the network 100 is acellular network and/or WAN, such as a Global System for Mobilecommunications (GSM) network, a Universal Mobile TelecommunicationsSystem (UMTS) network, or a Long-Term Evolution (LTE) network, ratherthan a LAN according to example embodiments.

Another example of the portable computing device 102 determining thatthe portable computing device 102 is in the limited data environment(204) is by determining that the portable computing device is in thelimited data environment based on a data speed and/or latency. Theportable computing device 102 may determine that the portable computingdevice 102 is in the limited data environment based on a data speedand/or latency by comparing present data speeds and/or present latenciesin the network 100 to previously determined, measured, and/or storeddata speeds and/or latencies.

FIG. 2B is a timing diagram showing an example in which the portablecomputing device 102 determines speeds of access to the web servers108A, 108B according to an example embodiment. The portable computingdevice 102 may determine present speeds of access, such as data speedsand/or latencies, by sending requests and responses to the web servers108A, 108B.

In the example shown in FIG. 2B, the portable computing device 102 mayretrieve data from the web server 108A by sending a request 222A to theweb server 108A via the node 104, and receiving a response 224A from theweb server 108A via the node 104. Portable computing device 102 maydetermine a speed (226A) of access to the web server 108A, based on alatency and/or time difference between the request 222A and response224A and/or an amount of data received and the time to receive the data,or other measurements of data speed between the portable computingdevice 102 and the web server 108A.

The portable computing device 102 may also determine the speed of accessto the web server 108B. Portable computing device 102 may determine thespeed of access to the web server 108B by sending a request 222B to theweb server 108B via the node 104 and receiving a response 224B from theweb server 108B via the node 104. Portable computing device 102 maydetermine a speed (226B) of access to the web server 108B, based on alatency between the request 222B and the response 224B, and/or based onan amount of data received and the time to receive the data, or othermeasurements of data speed between the portable computing device 102 andthe web server 108B.

Returning to FIG. 2A, after determining the speeds of access to the webservers 108A, 108B, the portable computing device 102 may thereaftercompare the data speed and/or latency of the data access by the portablecomputing device 102 to the web servers 108A, 108B to previousmeasurements of data speed and portable computing device 102 and the webservers 108A, 108B in different environments. The portable computingdevice 102 may have previously determined speeds of access, such as dataspeed and/or latency, to websites hosted by the web servers 108A, 108B,in a similar manner to the determinations of present speeds of accessshown and described with respect to FIG. 2B, in different environments,different networks, and/or with connections to different nodes.

If the speed is significantly slower and/or the latency is significantlygreater, such as the speed and/or data rate being least a speedthreshold or data rate threshold slower, and/or the latency being athreshold latency greater, than the previously stored speed and/orlatency for the same website(s) and/or the same web server 108A, 108B,then the portable computing device 102 may determine that the portablecomputing device 102 is in the limited data environment (204). Based onand/or in response to the portable computing device 102 determining thatthe portable computing device 102 is in the limited data environment204, the portable computing device 102 may prompt the user to activatethe data saving feature (206).

FIG. 3A shows a browser 300 prompting a user to activate a data savingfeature according to an example embodiment. As shown in FIG. 3A, theuser may have been accessing data at a website identified in an addressbar 302 of the browser 300. The browser 300 may display a prompt 304 tothe user inviting the user to activate the data saving feature. Theprompt 304 may include a popup window with a hyperlink or button for theuser to click on with a cursor 306 to activate the data saving feature.The prompt 304 may be generated by an operating system of the portablecomputing device 102.

The prompt 304 may inform the user that the data saving feature maycause some of the user's web browsing to be shared with a provider ofthe data saving feature, and/or inquire whether the user consents tosharing web browsing information with the provider of the data savingfeature. If the user does not wish to share web browsing informationwith the provider of the data saving feature, then the data savingfeature may not be downloaded, installed, and/or activated on theportable computing device 102.

In an example in which the data saving feature is preinstalled on theportable computing device 102, the portable computing device 102 mayprompt the user to activate the data saving feature (206) by requestingthe user to enable the data saving feature. In this example, clicking onthe prompt 304 may enable the data saving feature.

In an example in which the data saving feature has not previously beeninstalled and/or saved on the portable computing device 102, portablecomputing device 102 may prompt the user to download the data savingfeature from the extension server 112. In this example, the prompt 304may include a hyperlink taking the user to a website and/or web pagewhere the user and/or portable computing device 102 can download thedata saving feature.

FIG. 2C is a timing diagram showing the portable computing device 102downloading the data saving feature from the extension server 112according to an example embodiment. In this example, if the user choosesto download the data saving feature in response to the prompt (206),such as by clicking on the prompt 304, the portable computing device 102may request a page (232) from the extension server 112. Extension server112 may respond to the request (232) by sending the page (234) to theportable computing device 102. Page (234) may include, for example,hyperlinks within a store that are associated with browser extensions orother files that the portable computing device 102 may download.

FIG. 3B shows the browser 300 presenting a web page making the datasaving feature available for download according to an exampleembodiment. In this example, the browser 300 is showing the web page(234) that the portable computing device 102 received from the extensionserver 112. The extension server 112 may host a website and/or web pageshown in the address bar 302. The website and/or web page may cause thebrowser 300 to display a link 308 for the user to click on with thecursor 306 to download the data saving feature and/or browser extension.The data saving feature and/or browser extension may be a Custom WidgetSystem (CWS) widget, according to an example embodiment. The user maydecide to download the data saving feature by clicking on the link 308.

Returning to FIG. 2C, the portable computing device 102 may request thefile (236) which is used to install the browser extension in response tothe user clicking on the link 308 associated with the browser extension.The extension server 112 may respond to the request (236) by sending thefile (238), used to install and/or activate the browser extension withthe data saving feature, to the portable computing device 102.

Returning to FIG. 2A, and based on user input indicating a desire toactivate the data saving feature (such as by clicking on the prompt 304and/or link 308) in response to the prompt (206), the portable computingdevice 102 may activate the data saving feature (208). The data savingfeature may cause the portable computing device 102 to download and/orreceive compressed data from the proxy server 106 rather than receivingdata directly from the web servers 108A, 108B. The portable computingdevice 102 may show, and/or describe to the user, how to activate/enableand deactivate/disable the data saving feature.

After the portable computing device 102 has activated the data savingfeature (208), the portable computing device 102 may send an activationmessage 210 to the log server 110. The activation message 210 mayindicate whether the user chose to activate the data saving feature, andinformation such as an identity of the user, information about theportable computing device 102, identity and information about thenetwork 100 such as type of network, location of the network, dataspeeds and/or latencies in the network, and/or number of devices in thenetwork, as non-limiting examples. The log server 110 may respond to theactivation message 210 by storing the fact of activation (or decisionnot to activate) in association with the information about the user,portable computing device 102, and/or network 100.

The portable computing device 102 may receive compressed data 212A, 212Bfrom the web servers 108A, 108B via the proxy server 106 and the node104. Portable computing device 102 may decompress the compressed data212A, 212B (214). Decompressing the data may be a feature of the datasaving feature, which may be a function of the browser extension. Whilemost data may be received from the web servers 108A, 108B via the proxyserver 106, private and/or secure data, such as data received via aHypertext Transfer Protocol Secure (HTTPS) connection, may be receiveddirectly from the web servers 108A, 108B, and not via the proxy server106.

Portable computing device 102 may also send a reduction message 216 tolog server 110. The reduction message 216 may indicate the reduction inthe amount of data downloaded and/or a reduced latency based on usingthe data saving feature compared to directly downloading data from theweb servers 108A, 108B.

FIG. 4 is a diagram of the portable computing device 102 according to anexample embodiment. Portable computing device 102 determines whether theportable computing device 102 is in a limited data environment such asin communication with a cellular base station, or in a congested networkdue to contention with multiple other devices for data from a node. Ifthe portable computing device 102 is in a limited data environment, thenthe portable computing device 102 may prompt the user to activate a datasaving feature.

The portable computing device 102 may include an environment determiner402. The environment determiner 402 may determine whether the portablecomputing device 102 is in the limited data environment.

The environment determiner 402 may include a speed measurer 404. Thespeed measurer 404 may measure the speed of the access to data by theportable computing device 102. The speed measurer 404 may measure, forexample, a current data rate or speed of downloading data, or a latencyof downloading data, from web servers 108A, 108B. The speed measurer 404may determine and/or measure present and previous speeds of access asdescribed above with respect to FIG. 2B, according to an exampleembodiment. The environment determiner 402 may also include a speedstorer 406. The speed storer 406 may store download data speeds and/orlatency times. The speed storer 406 may store download data speedsand/or latencies in association with particular websites and/or inassociation with particular networks.

The environment determiner 402 may also include a speed comparator 408.The speed comparator 408 may compare the present speed of access towebsites, such as present data speeds, present data rates, and/orpresent latencies, to previously stored speeds of access to the samewebsites, such as a previously measured data rate, previously determineddata rate, previously measured data rate, and/or a previously determinedlatency, for a website. The comparator 408 may compare the present speedto previously measured speed for any number of websites, such as onewebsite, two websites (associated with the two web servers 108A, 108B),three websites, or any number of websites. The speed comparator 408 maydetermine that the environment is a limited data environment, and/orthat the network 100 is a slow network based on comparisons for all ofthe websites showing slower speeds, comparisons for a majority of thewebsites showing slower speeds, or comparisons for a supermajority ofthe websites showing slower speeds. If the comparison by the speedcomparator 408 determines that the speed is significantly slower than apreviously stored speed, then the environment determiner 402 maydetermine that the environment is a limited data environment, and/orthat the network 100 is a slow network.

The environment determiner 402 may include a network determiner 410. Thenetwork determiner 410 may determine a type of a network in which theportable computing device 102 is receiving data. The network determiner410 may, for example, determine a service set identifier (SSID) of thenetwork 100. The network determiner 410 may, for example, determinewhether portable computing device 102 is accessing data via a type ofnetwork such as a cellular network or WAN, which may be considered alimited data environment, based on the SSID of the network 100.

Environment determiner 402 may also include a network storer 412. Thenetwork storer 412 may store identities of previous networks. Thenetwork storer 412 may store identities of networks, including whetherportable computing device 102 has previously determined that a networkis a limited data environment based on previous determinations of thetype and/or speed of the network. The environment determiner 402 mayalso include a network comparator 414. The network comparator 414 maycompare a present network to stored networks to determine that portablecomputing device 102 is in a limited data environment based on thenetwork determiner 410 determining that the network 100, in which theportable computing device 102 is physically located, is the same networkas a network that has been previously determined to be a limited dataenvironment based on a present identifier (such as the SSID) of thenetwork 100. In an example embodiment, the environment determiner 402may determine that the network 100 is a limited data environment basedon the portable computing device 102 not having previously visited,and/or not having previously accessed data via, the network 100. Inanother example embodiment, the environment determiner 402 may determinethat the network 100 is a limited data environment based on the userhaving to pay for incremental data use, or based on the user having topay based on an amount of time spent accessing data within the network100.

In an example embodiment, the environment determiner 402 may call afunction to determine a maximum data rate of the network 100. Thefunction may determine the maximum data rate by performing measurementsas described above, querying the node 104 for the maximum data rateavailable, or based on a type of the network 100. If the maximum datarate determined by calling the function is less than a threshold and/orpredetermined data rate, then the environment determiner 402 maydetermine that the portable computing device 102 is in a limited dataenvironment.

Portable computing device 102 may include a browser 416. The browser 416may facilitate the user of the portable computing device 102 visitingwebsites and may present information based on pages downloaded fromwebsites, such as websites hosted by web servers 108A, 108B. Extensions418 may extend functionality of the browser 416.

The extensions 418 may include a data saving feature 420. The datasaving feature 420 may have the features described above with respect toa data saving feature. The data saving feature 420 may have beenpreinstalled on the portable computing device 102. The data savingfeature 420 may reduce the data required to download a page. The datasaving feature 420 may include a redirector 422. The redirector 422 mayredirect requests for webpages and websites from the web servers 108A,108B associated with websites to the proxy server 106. Requestsredirected to the proxy server 106 may include the website as parametersin the requests to the proxy server 106. The data saving feature 420 mayalso include a decompressor 424. The decompressor 424 may decompressdata received from the proxy server 106. The decompressor 424 maydecompress the compressed data received from the proxy server 106according to a protocol that was determined, and/or agreed upon betweenthe portable computing device 102 and the proxy server 106, before theportable computing device 102 received the compressed data from theproxy server 106. The extensions 418 may also include also includeadditional extensions 426 which extend the functionality of the browser416.

The browser 416 may include a downloader 428. The downloader 428 maydownload, for example, files from websites, such as webpages and files.The files may include the file to install and activate the data savingfeature 420 in the browser 416. The browser 416 may also include anactivator/deactivator 430. The activator/deactivator 430 may enable theuser to activate and deactivate extensions of the browser 416, such asthe data saving feature 420.

Portable computing device 102 may include a prompter 432. The prompter432 may prompt the user to download, install, and/or activate the datasaving feature based on, and/or in response to, the environmentdeterminer 402 determining that the portable computing device 102 is ina limited data environment. The prompter 432 may prompt the user todownload, install, and/or activate the data saving feature based on,and/or in response to, a previous user of the portable computing device102 having activated the data saving feature 420.

The prompter 432 may present a prompt, such as a popup window includingthe prompt 304 shown in FIG. 3A, to the user to activate and/or downloadthe data saving feature 420. The prompter 432 may include a hyperlinkwith a specified Uniform Resource Locator (URL) directing the user to astore in which the user of the portable computing device 102 maydownload the data saving feature 420. The user may download the datasaving feature 420 to the portable computing device 102 as an extension418 of the browser 416. In an example in which the data saving feature420 has been preinstalled and/or has already been installed on theportable computing device 102, the prompter 432 may prompt the user toactivate the data saving feature 420 on the portable computing device102.

The prompter 432 may include a prompt counter 434. The prompt counter434 may count a number of times that the prompter 432 has prompted theuser to download, install, and/or activate the data saving feature 420.If the prompter 432 has prompted the user to download, install, and/oractivate the data saving feature 420 at least, or greater than, apredetermined number of times, and the user has not chosen to download,install, and/or activate the data saving feature 420 in response to anyof the prompts, then the prompter 432 may stop prompting the user todownload, install, and/or activate the data saving feature 420. Forexample, the prompter 432 may prompt the user to download, install,and/or activate the data saving feature 420 twice, and if the user doesnot download, install, and/or activate the data saving feature 420 inresponse to either of the two prompts, then the prompter 432 may notprompt the user to download, install, and/or activate the data savingfeature 420 any more times.

The prompter 432 may also include an installation checker 436. Theinstallation checker 436 may check to determine whether the data savingfeature 420 has already been downloaded, installed, and/or activated onthe portable computing device 102. If the data saving feature 420 hasalready been downloaded, installed, and/or activated on the portablecomputing device 102, then the prompter 432 may not prompt the user todownload, install, and/or activate the data saving feature 420 on theportable computing device 102.

The portable computing device 102 may include a usage reporter 438. Theusage reporter 438 may report to the log server 110 whether the user ofthe portable computing device 102, and users or other portable computingdevices, have downloaded, installed, and/or activated the data savingfeature 420 in response to the prompt, and/or the savings in data and/orreduction in latency based on use of the data savings feature 420.

The usage reporter 438 may include an activation notifier 440. Theactivation notifier 440 may send the activation message 210 to the logserver 110 indicating whether the user has downloaded, installed, and/oractivated the data saving feature 420 in response to the prompt. Theactivation message 210 may include information identifying the portablecomputing device 102, the user and/or account that is logged into theportable computing device 102, information about the environment and/ornetwork that caused the prompt to download, install, and/or activate thedata saving feature 420, such as the type of network (cellular, widearea network, local area network) and/or statistics (data rate,latency), and/or a location of the portable computing device 102, asnon-limiting examples.

The usage reporter 438 may also include a savings determiner 442. Thesavings determiner 442 may determine the savings attributable to theportable computing device 102 using the data saving feature 420 and/orreceiving data from the web servers 108A, 108B via the proxy server 106.The savings determiner 442 may, for example, determine a reduction inthe downloaded data and/or a reduction in the latency required todownload the data from the web servers 108A, 108B attributable to usingthe data savings feature 420. The savings determiner 442 may determinethe reduction by comparing current data amounts and/or current latenciesusing the data saving feature 420 to previously measured data amountsand/or latencies not using the data saving feature, or by comparing thereceived, compressed file sizes and/or amounts of data to decompressedfile sizes and/or amounts of data.

The usage reporter 438 may also include a savings notifier 444. Thesavings notifier 444 may notify the log server 110 of the savingsattributable to the portable computing device 102 using the data savingfeature 420 and/or receiving data from the web servers 108A, 108B viathe proxy server 106. The savings notifier 444 may send the reductionmessage 216 to the log server 110, the reduction message 216 includingthe savings attributable to the portable computing device 102 using thedata saving feature 420 and/or receiving data from the web servers 108A,108B via the proxy server 106. The reduction message 216 may indicatethe measured reduction in data use, and/or the measured reduction inlatency, by activating and/or using the data saving feature 420.

The portable computer device 102 may include a synchronizer 446. Thesynchronizer 446 may synchronize settings across devices associated withthe user's account. For example, if the user of the portable computingdevice 102 has activated the data saving feature 420, then thesynchronizer 446 may activate the data saving feature 420 on otherdevices, such as the portable computing device 102A, associated with theuser's account. The synchronizer 446, which may be common to multipleportable computing devices 102, 102A, may activate the data savingfeature 420 in the portable computing device 102A, and/or multiplecomputing devices associated with an account associated with the user,in response to the user logging into the portable computing device 102Abased on the user having previously activating the data saving feature420 in the portable computing device 102.

The portable computing device 102 may include an authenticator 448. Theauthenticator 448 may authenticate users, and/or accounts associatedwith users, to the portable computing device 102. The authenticator 448may receive login credentials, such as a username and password, comparethe login credentials to previously stored login credentials, and if thereceived login credentials match the previously stored logincredentials, authenticate and/or log the user into the portablecomputing device 102 to begin a session with the user. The session mayend when the user logs out. Upon authenticating and/or logging the userinto the portable computing device 102, the authenticator 448 and/orportable computing device may, during a session with the user, restoresettings associated with the user, such as bookmarks on the browser 416,previously visited websites, and/or activated extensions 418 such as thedata saving feature 420. If the user logs into another portablecomputing device 102A, the portable computing device 102A, may restorethe user's settings, such as use and/or activation of the data savingfeature 420, during the user's session on the portable computing device102A.

The portable computing device 102 may include at least one processor450. The at least one processor 450 may include one or more processorscapable of executing instructions, such as instructions for the portablecomputing device 102 to perform any of the methods, functions, and/orprocesses described herein.

The portable computing device 102 may include at least one memory device452. The at least one memory device 452 may include at least onenon-transitory computer-readable storage medium, and may storeexecutable instructions and data. The executable instructions stored bythe at least one memory device 452 may include instructions that, whenexecuted by the at least one processor 450, are configured to cause theportable computing device 102 to perform any combination of the methods,functions, and/or processes described herein. The data stored by the atleast one memory device 452 may include data used by the portablecomputing device 102 to perform, and/or generated by the portablecomputing device 102 when performing, any of the methods, functions,and/or processes described herein.

The portable computing device 102 may include input/output modules 454.The input/output modules 454 may receive input from the user and/orother computing devices, and may provide output to the user and/or othercomputing devices. The input/output modules 454 may include inputdevices such as a keyboard, a touchscreen, data input nodes such as aUniversal Serial Bus (USB) port and/or wireless interface, locationsensors such as GPS monitors, a tilt sensor, and/or a microphone, andmay include output devices such as a display, speaker (which may outputan alarm sound), vibration device, and/or data input nodes such as theUSB port, and may include one or more wireless interfaces such asantennas for sending and receiving signals with base stations includedin a Global System for Mobile Communications (GSM) network, a UniversalMobile Telecommunications System (UMTS) network, or a Long-TermEvolution (LTE) network, satellites providing data access to theportable computing device 102, and/or access points in an Institute forElectrical and Electronics Engineers (IEEE) 802.11 Wireless Fidelity(“WiFi”) network.

FIG. 5 is a flowchart showing a method 500 of activating a data savingfeature in response to determining that the portable computing device102 is in a limited data environment according to an example embodiment.The method 500 may include determining that the portable computingdevice 102 is in the limited data environment (502). The method 500 mayalso include, based on the determining that the portable computingdevice 102 is in the limited data environment, prompting a user toactivate the data saving feature 420 (504).

In an example implementation, the limited data environment may include awireless network.

In an example implementation, the determining that the portablecomputing device 102 is in the limited data environment (502) mayinclude determining that the portable computing device 102 is receivingdata via a cellular base station.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the portable computing device 102 is receiving data viaa Global System for Mobile Communications (GSM).

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the portable computing device 102 is receiving data viaa Universal Mobile Telecommunications System (UMTS).

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the portable computing device 102 is receiving data viaa Long-Term Evolution (LTE) network.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that a current data rate is lower than at least onepreviously measured data rate.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includecomparing a present data rate for a previously visited website to apreviously determined data rate for the previously visited website.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includecomparing a present latency for a previously visited website to apreviously determined latency for the previously visited website.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includecomparing a first present latency for a first previously visited websiteto a first previously determined latency for the first previouslyvisited website, comparing a second present latency for a secondpreviously visited website to a second previously determined latency forthe second previously visited website, and determining that the firstpresent latency exceeds the first previously determined latency and thesecond present latency exceeds the second previously determined latency.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the portable computing device 102 is in the limiteddata environment based on a service set identifier (SSID) associatedwith a network 100 via which the portable computing device 102 isreceiving data.

In an example implementation, the SSID associated with the network viawhich the portable computing device is receiving data may havepreviously been stored as a slow network.

In an example implementation, the SSID associated with the network viawhich the portable computing device is receiving data may not havepreviously been visited by the portable computing device 102.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the user will pay for additional incremental data use.

In an example implementation, determining that the portable computingdevice 102 is in the limited data environment (502) may includedetermining that the user will pay based on an amount of time spentaccessing a network associated with the limited data environment.

In an example implementation, the prompting the user to activate thedata saving feature (504) may include prompting the user to download abrowser extension 418. The browser extension 418 may be configured tocause the portable computing device 102 to receive compressed data 212A,212B from a proxy server 106, and decompress (214) the compressed data212A, 212B received from the proxy server 106.

In an example implementation, the method 500 may further includedetermining that the data saving feature 420 has not already beeninstalled on the portable computing device 102. The prompting the userto activate the data saving feature (504) may be performed based on thedetermination that the portable computing device is in the limited dataenvironment and the determination that the data saving feature 420 hasnot already been installed on the portable computing device 102.

According to an example implementation, the prompting the user toactivate the data saving feature 420 (504) may include prompting theuser to activate a browser extension 418. The browser extension 418 maybe configured to cause the portable computing device 102 to receivecompressed data 212A, 212B from a proxy server 106, and decompress (214)the compressed data 212A, 212B received from the proxy server 106.

According to an example implementation, the prompting the user toactivate the data saving feature 420 (504) may include prompting theuser to download a browser extension 418 at a specified Uniform ResourceLocator (URL) address.

According to an example implementation, the prompting the user toactivate the data saving feature 420 (504) may be performed a limitednumber of times, based on the determining that the portable computingdevice 102 is in the limited data environment (502).

According to an example implementation, the method 500 may furtherinclude the portable computing device 102 sending a message 210 to a logserver 110 indicating that the user activated the data saving feature420.

According to an example implementation, the method 500 may furtherinclude the portable computing device 102 sending at least one message216 to a log server 110 indicating a measured reduction in data use byactivating the data saving feature 420.

According to an example implementation, the method 500 may furtherinclude the portable computing device 102 sending at least one message216 to a log server 110 indicating a measured reduction in latency byactivating the data saving feature 420.

According to an example implementation, the portable computing device102 may include at least one of a laptop computer and a tablet computer.

According to an example implementation, the method 500 may furtherinclude the portable computing device 102 activate the data savingfeature 420 across multiple computing devices 102, 102A associated withan account associated with the user, in response to the user activatingthe data saving feature 420.

FIG. 6 is a flowchart showing a method 600 of prompting a user todownload a browser extension 418 for reducing data use in response todetermining that the portable computing device 102 is in a limited dataenvironment according to an example embodiment. The method 600 mayinclude determining that the portable computing device 102 is in thelimited data environment. The determining that the portable computingdevice 102 is in the limited data environment may include comparing afirst present latency for a first previously visited website to a firstpreviously determined latency for the first previously visited website(602), comparing a second present latency for a second previouslyvisited website to a second previously determined latency for the secondpreviously visited website (604), and determining that the first presentlatency exceeds the first previously determined latency and the secondpresent latency exceeds the second previously determined latency (606).The method 600 may also include, based on the determining that theportable computing device 102 is in the limited data environment,prompting the user to download the browser extension 418 (608). Oncedownloaded (610), the browser extension 418 may be configured to causethe portable computing device 102 to receive compressed data 212A, 212Bfrom a proxy server 106 (612), and decompress (614) the compressed data212A, 212B received from the proxy server 106 (614).

FIG. 7 is a flowchart showing a method 700 of prompting a user todownload a browser extension 418 for reducing data use in response todetermining that the portable computing device 102 is in a limited dataenvironment according to another example embodiment. The method 700 mayinclude determining that the portable computing device 102 is accessingthe Internet via a cellular connection with a base station 104 (702).The method 700 may also include, based on the determining that theportable computing device 102 is accessing the Internet via the cellularconnection with the base station 104, prompting a user to download thebrowser extension 418 (704). Once downloaded, the browser extension 418may be configured to cause the portable computing device 102 to receivecompressed data 212A, 212B from a proxy server 106 (706), and decompress214 the compressed data 212A, 212B received from the proxy server 106(708).

FIG. 8 is a flowchart showing a method 800 of prompting a user toactivate a data saving feature 420 based on a previous user havingactivated the data saving feature 420 according to an exampleembodiment. The method 800 may include the portable computing device 102accepting login credentials from a first user (802). The method 800 mayalso include activating the data saving feature 420 in response to inputfrom the first user during a session associated with the first user(804). The method 800 may also include logging the first user out (806).The method 800 may also include, after logging the first user out (806),accepting login credentials from a second user (808). The method 800 mayalso include, based on activating the data saving feature 420 during thesession associated with the first user (804), prompting the second userto activate the data saving feature 420 during a session associated withthe second user (810).

FIG. 9 shows an example of a generic computer device 900 and a genericmobile computer device 950, which may be used with the techniquesdescribed here. Computing device 900 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 950 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 900 includes a processor 902, memory 904, a storagedevice 906, a high-speed interface 908 connecting to memory 904 andhigh-speed expansion ports 910, and a low speed interface 912 connectingto low speed bus 914 and storage device 906. Each of the components 902,904, 906, 908, 910, and 912, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 902 can process instructions for executionwithin the computing device 900, including instructions stored in thememory 904 or on the storage device 906 to display graphical informationfor a GUI on an external input/output device, such as display 916coupled to high speed interface 908. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices900 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 904 stores information within the computing device 900. Inone implementation, the memory 904 is a volatile memory unit or units.In another implementation, the memory 904 is a non-volatile memory unitor units. The memory 904 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 906 is capable of providing mass storage for thecomputing device 900. In one implementation, the storage device 906 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 904, the storage device 906,or memory on processor 902.

The high speed controller 908 manages bandwidth-intensive operations forthe computing device 900, while the low speed controller 912 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 908 iscoupled to memory 904, display 916 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 910, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 912 is coupled to storage device 906 and low-speed expansionport 914. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 900 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 920, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 924. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 922. Alternatively, components from computing device 900 may becombined with other components in a mobile device (not shown), such asdevice 950. Each of such devices may contain one or more of computingdevice 900, 950, and an entire system may be made up of multiplecomputing devices 900, 950 communicating with each other.

Computing device 950 includes a processor 952, memory 964, aninput/output device such as a display 954, a communication interface966, and a transceiver 968, among other components. The device 950 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 950, 952,964, 954, 966, and 968, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 952 can execute instructions within the computing device950, including instructions stored in the memory 964. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 950, such ascontrol of user interfaces, applications run by device 950, and wirelesscommunication by device 950.

Processor 952 may communicate with a user through control interface 958and display interface 956 coupled to a display 954. The display 954 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 956 may comprise appropriatecircuitry for driving the display 954 to present graphical and otherinformation to a user. The control interface 958 may receive commandsfrom a user and convert them for submission to the processor 952. Inaddition, an external interface 962 may be provide in communication withprocessor 952, so as to enable near area communication of device 950with other devices. External interface 962 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 964 stores information within the computing device 950. Thememory 964 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 974 may also be provided andconnected to device 950 through expansion interface 972, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 974 may provide extra storage space fordevice 950, or may also store applications or other information fordevice 950. Specifically, expansion memory 974 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 974may be provide as a security module for device 950, and may beprogrammed with instructions that permit secure use of device 950. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 964, expansionmemory 974, or memory on processor 952, that may be received, forexample, over transceiver 968 or external interface 962.

Device 950 may communicate wirelessly through communication interface966, which may include digital signal processing circuitry wherenecessary. Communication interface 966 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 968. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 970 mayprovide additional navigation- and location-related wireless data todevice 950, which may be used as appropriate by applications running ondevice 950.

Device 950 may also communicate audibly using audio codec 960, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 960 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 950. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 950.

The computing device 950 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 980. It may also be implemented as part of a smartphone 982, personal digital assistant, or other similar mobile device.

Implementations of the various techniques described herein may beimplemented in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations of them. Implementations mayimplemented as a computer program product, i.e., a computer programtangibly embodied in an information carrier, e.g., in a machine-readablestorage device or in a propagated signal, for execution by, or tocontrol the operation of, data processing apparatus, e.g., aprogrammable processor, a computer, or multiple computers. A computerprogram, such as the computer program(s) described above, can be writtenin any form of programming language, including compiled or interpretedlanguages, and can be deployed in any form, including as a stand-aloneprogram or as a module, component, subroutine, or other unit suitablefor use in a computing environment. A computer program can be deployedto be executed on one computer or on multiple computers at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

Method steps may be performed by one or more programmable processorsexecuting a computer program to perform functions by operating on inputdata and generating output. Method steps also may be performed by, andan apparatus may be implemented as, special purpose logic circuitry,e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. Elements of a computer may include atleast one processor for executing instructions and one or more memorydevices for storing instructions and data. Generally, a computer alsomay include, or be operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. Informationcarriers suitable for embodying computer program instructions and datainclude all forms of non-volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory may be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, implementations may beimplemented on a computer having a display device, e.g., a cathode raytube (CRT) or liquid crystal display (LCD) monitor, for displayinginformation to the user and a keyboard and a pointing device, e.g., amouse or a trackball, by which the user can provide input to thecomputer. Other kinds of devices can be used to provide for interactionwith a user as well; for example, feedback provided to the user can beany form of sensory feedback, e.g., visual feedback, auditory feedback,or tactile feedback; and input from the user can be received in anyform, including acoustic, speech, or tactile input.

Implementations may be implemented in a computing system that includes aback-end component, e.g., as a data server, or that includes amiddleware component, e.g., an application server, or that includes afront-end component, e.g., a client computer having a graphical userinterface or a Web browser through which a user can interact with animplementation, or any combination of such back-end, middleware, orfront-end components. Components may be interconnected by any form ormedium of digital data communication, e.g., a communication network.Examples of communication networks include a local area network (LAN)and a wide area network (WAN), e.g., the Internet.

While certain features of the described implementations have beenillustrated as described herein, many modifications, substitutions,changes and equivalents will now occur to those skilled in the art. Itis, therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the true spiritof the embodiments of the invention.

What is claimed is:
 1. A non-transitory computer-readable storage mediumcomprising instructions stored thereon for causing a portable computingdevice to activate a data saving feature in response to determining thatthe portable computing device is in a limited data environment, theinstructions being configured to cause the portable computing device toat least: determine that the portable computing device is in the limiteddata environment; and based on the determining that the portablecomputing device is in the limited data environment, prompt a user toactivate the data saving feature.
 2. The non-transitorycomputer-readable storage medium of claim 1, wherein the limited dataenvironment includes a wireless network.
 3. The non-transitorycomputer-readable storage medium of claim 1, wherein the determiningthat the portable computing device is in the limited data environmentincludes determining that the portable computing device is receivingdata via a cellular base station.
 4. The non-transitorycomputer-readable storage medium of claim 1, wherein the determiningthat the portable computing device is in the limited data environmentincludes determining that the portable computing device is receivingdata via a Global System for Mobile Communications (GSM).
 5. Thenon-transitory computer-readable storage medium of claim 1, wherein thedetermining that the portable computing device is in the limited dataenvironment includes determining that the portable computing device isreceiving data via a Universal Mobile Telecommunications System (UMTS).6. The non-transitory computer-readable storage medium of claim 1,wherein the determining that the portable computing device is in thelimited data environment includes determining that the portablecomputing device is receiving data via a Long-Term Evolution (LTE)network.
 7. The non-transitory computer-readable storage medium of claim1, wherein the determining that the portable computing device is in thelimited data environment includes determining that a current data rateis lower than at least one previously measured data rate.
 8. Thenon-transitory computer-readable storage medium of claim 1, wherein thedetermining that the portable computing device is in the limited dataenvironment includes comparing a present data rate for a previouslyvisited website to a previously determined data rate for the previouslyvisited website.
 9. The non-transitory computer-readable storage mediumof claim 1, wherein the determining that the portable computing deviceis in the limited data environment includes comparing a present latencyfor a previously visited website to a previously determined latency forthe previously visited website.
 10. The non-transitory computer-readablestorage medium of claim 1, wherein the determining that the portablecomputing device is in the limited data environment includes: comparinga first present latency for a first previously visited website to afirst previously determined latency for the first previously visitedwebsite; comparing a second present latency for a second previouslyvisited website to a second previously determined latency for the secondpreviously visited website; and determining that the first presentlatency exceeds the first previously determined latency and the secondpresent latency exceeds the second previously determined latency. 11.The non-transitory computer-readable storage medium of claim 1, whereinthe determining that the portable computing device is in the limiteddata environment includes determining that the portable computing deviceis in the limited data environment based on a service set identifier(SSID) associated with a network via which the portable computing deviceis receiving data.
 12. The non-transitory computer-readable storagemedium of claim 11, wherein the SSID associated with the network viawhich the portable computing device is receiving data had previouslybeen stored as a slow network.
 13. The non-transitory computer-readablestorage medium of claim 11, wherein the SSID associated with the networkvia which the portable computing device is receiving data had notpreviously been visited by the portable computing device.
 14. Thenon-transitory computer-readable storage medium of claim 1, wherein thedetermining that the portable computing device is in the limited dataenvironment includes determining that the user will pay for additionalincremental data use.
 15. The non-transitory computer-readable storagemedium of claim 1, wherein the determining that the portable computingdevice is in the limited data environment includes determining that theuser will pay based on an amount of time spent accessing a networkassociated with the limited data environment.
 16. The non-transitorycomputer-readable storage medium of claim 1, wherein: the prompting theuser to activate the data saving feature includes prompting the user todownload a browser extension; and the browser extension is configured tocause the portable computing device to: receive compressed data from aproxy server; and decompress the compressed data received from the proxyserver.
 17. The non-transitory computer-readable storage medium of claim1, wherein: the instructions are further configured to cause theportable computing device to determine that the data saving feature hasnot already been installed on the portable computing device; and theprompting the user to activate the data saving feature is performedbased on the determination that the portable computing device is in thelimited data environment and the determination that the data savingfeature has not already been installed on the portable computing device.18. The non-transitory computer-readable storage medium of claim 1,wherein: the prompting the user to activate the data saving featureincludes prompting the user to activate a browser extension; and thebrowser extension is configured to cause the portable computing deviceto: receive compressed data from a proxy server; and decompress thecompressed data received from the proxy server.
 19. The non-transitorycomputer-readable storage medium of claim 1, wherein the prompting theuser to activate the data saving feature includes prompting the user todownload a browser extension at a specified Uniform Resource Locator(URL) address.
 20. The non-transitory computer-readable storage mediumof claim 1, wherein the instructions are configured to prompt the userto activate the data saving feature, a limited number of times, based onthe determining that the portable computing device is in the limiteddata environment.
 21. The non-transitory computer-readable storagemedium of claim 1, wherein the instructions are further configured tocause the portable computing device to send a message to a log serverindicating that the user activated the data saving feature.
 22. Thenon-transitory computer-readable storage medium of claim 1, wherein theinstructions are further configured to cause the portable computingdevice to send at least one message to a log server indicating ameasured reduction in data use by activating the data saving feature.23. The non-transitory computer-readable storage medium of claim 1,wherein the instructions are further configured to cause the portablecomputing device to send at least one message to a log server indicatinga measured reduction in latency by activating the data saving feature.24. The non-transitory computer-readable storage medium of claim 1,wherein the portable computing device includes at least one of a laptopcomputer and a tablet computer.
 25. The non-transitory computer-readablestorage medium of claim 1, wherein the instructions are furtherconfigured to cause the portable computing device to, in response to theuser activating the data saving feature, activate the data savingfeature across multiple computing devices associated with an accountassociated with the user.
 26. A non-transitory computer-readable storagemedium comprising instructions stored thereon for causing a portablecomputing device to prompt a user to download a browser extension forreducing data use in response to determining that the portable computingdevice is in a limited data environment, the instructions beingconfigured to cause the portable computing device to at least: determinethat the portable computing device is in the limited data environment,the determining that the portable computing device is in the limiteddata environment including: comparing a first present latency for afirst previously visited website to a first previously determinedlatency for the first previously visited website; comparing a secondpresent latency for a second previously visited website to a secondpreviously determined latency for the second previously visited website;and determining that the first present latency exceeds the firstpreviously determined latency and the second present latency exceeds thesecond previously determined latency; and based on the determining thatthe portable computing device is in the limited data environment, promptthe user to download the browser extension, the browser extension beingconfigured to cause the portable computing device to: receive compresseddata from a proxy server; and decompress the compressed data receivedfrom the proxy server.
 27. A non-transitory computer-readable storagemedium comprising instructions stored thereon for causing a portablecomputing device to prompt a user to download a browser extension forreducing data use in response to determining that the portable computingdevice is in a limited data environment, the instructions beingconfigured to cause the portable computing device to at least: determinethat the portable computing device is accessing the Internet via acellular connection with a base station; and based on the determiningthat the portable computing device is accessing the Internet via thecellular connection with the base station, prompt a user to download thebrowser extension, the browser extension being configured to cause theportable computing device to: receive compressed data from a proxyserver; and decompress the compressed data received from the proxyserver.
 28. A non-transitory computer-readable storage medium comprisinginstructions stored thereon for prompting a user to activate a datasaving feature based on a previous user having activated the data savingfeature, the instructions being configured to cause a portable computingdevice to at least: accept login credentials from a first user; activatethe data saving feature in response to input from the first user duringa session associated with the first user; log the first user out; afterlogging the first user out, accept login credentials from a second user;and based on activating the data saving feature during the sessionassociated with the first user, prompt the second user to activate thedata saving feature during a session associated with the second user.